﻿namespace SqueezeboxLib
{
    public class GeneresTaggedParameter : TaggedParameter
    {
        public enum AcceptedTags
        {
            /// <summary>
            /// Search string. The search is case insensitive and obeys the "Search Within Words" server parameter.
            /// </summary>
            search,

            /// <summary>
            /// Limit results to those genres proposed by the artist identified by "artist_id".
            /// </summary>
            artist_id,

            /// <summary>
            /// Limit results to those genres available on the album identified by "album_id".
            /// </summary>
            album_id,

            /// <summary>
            /// Limit results to the genres of the track identified by "track_id". 
            /// If present, other filters are ignored.
            /// </summary>
            track_id,

            /// <summary>
            /// Limit results to the genres of the tracks of the given "year".
            /// </summary>
            year,

            /// <summary>
            /// Determines which tags are returned. Each returned tag is identified by a letter (see below). 
            /// The default value is empty.
            /// </summary>
            tags,

            /// <summary>
            /// Character set to use to return data. See charset notes above.
            /// </summary>
            charset
        }

        public enum ReturnedTags
        {
            /// <summary>
            /// Returned with value 1 if the server is still scanning the database. 
            /// The results may therefore be incomplete. Not returned if no scan is in progress.
            /// </summary>
            rescan,

            /// <summary>
            /// Number of results returned by the query.
            /// </summary>
            count,

            /// <summary>
            /// Genre ID. Item delimiter.
            /// </summary>
            id,

            /// <summary>
            /// Genre name.
            /// </summary>
            genere,

            /// <summary>
            /// The genre's "textkey" is the first letter of the sorting key.
            /// </summary>
            textkey
        }

        public GeneresTaggedParameter(AcceptedTags tag, string parameter)
            : base(tag.ToString(), parameter)
        {
        }
    }
}
